Real-time collaboration (RTC) can be of different forms, such as instant messaging (IM), videoconferencing, application sharing and netmeetings. For instance, IM is a form of real-time communication between two or more people based on typed text. The text is conveyed via computers connected over a network such as the Internet. There presently is a problem for real time communication over HTTP. Application Sharing is an element of remote access, falling under the collaborative software umbrella, which enables two or more users to access a shared application or document from their respective computers simultaneously in real time. Generally, the shared application or document will be running on a host computer, and remote access to the shared content will be provided to other users by the host user, many times over the Internet. There presently is a problem for real time communication over HTTP. The same holds for video conferencing, netmeetings and other RTC communications.
Hypertext Transfer Protocol (HTTP) is a method used to transfer or convey information on the World Wide Web or Internet. Its original purpose was to provide a way to publish and retrieve HTML pages.
Development of HTTP was coordinated by the W3C and the IETF culminating in the publication of a series of RFCs, most notably RFC 2616, which defines HTTP/1.1, the version of HTTP in common use today. (See http://tools.ietf.org/html/rfc2616).
HTTP is a request/response protocol between clients and servers. The originating client, such as a web browser, spider, an IM client, an application sharing client, netmeeting clients or other end-user tool is referred to as the user agent. The destination server, which stores or creates resources such as HTML files and images, is called the origin server. In between the user agent and origin server may be several intermediaries, such as proxies, gateways, and tunnels.
An HTTP client initiates a request by establishing a Transmission Control Protocol (TCP) connection to a particular port on a remote host. An HTTP server listening on that port waits for the client to send a request message. Once the request is received, the response is forwarded to the requester. However, the listening on the port by the server consumes server resources.
A plugin (or plug-in) is a computer program that interacts with a main application (a web browser or an email program, for example) to provide a certain, usually very specific, function. The code of the plugin or applet is downloaded from a web server and the browser either embeds the plugin or applet into a web page or opens a new window showing the plugin's or applet's user interface. It is desirable to provide HTTP-based RTC without requiring any plugins or applets, to browser's user.
In FIG. 1, a basic RTC System 101 is shown. RTC system 101 has Client 100, Server 102 and Client 104. Client 100 communicates with Client 104 through Server 102 and, in this example, in an RTC communication. Alternatively, Client 100 and Client 104 may be connected directly for RTC communication. Server 102 is shown within a Network 108 which may be of the many various forms such as Internet, local area network (LAN), MAN, etc. Server 102 has an Interface (I/F) 114 and I/F 116 for interfacing with Client 100 and Client 104. Server 102 further has an RTC Processor 118 for processing RTC communications between Client 100 and Client 104.
Client 100 has an I/F 120 for interfacing with the Network 108 and Server 102. Likewise, Client 104 has an I/F 122 for interfacing with the Network 108 and Server 102. Client 100 has an RTC Component 110 for providing RTC communications 130 with Client 104 through the Network 108 and Server 102. Likewise, Client 104 has an RTC Component 112 for providing RTC communications 130 with Client 100 through the Network 108 and Server 102.
Many times a Client needs an RTC Plug-in 132 to be dropped to the Client 100, 104 from the Server 102 (or elsewhere) so that the RTC can be completed. However, Download Time 134 can cause time problems as well as bandwidth problems for both the Client 100, 104 and the Server 102.
Presently, in order to have real-time collaboration, many methods are used. One example is to let the browser continually poll the server, triggered through some simple Java Script. This is shown in FIG. 2.
The term “polling” refers to actively sampling the status of an external device by a client program as a synchronous activity. An example of polling can be found in many online chat solutions where a server must queue messages and wait to be asked by a client. This is the most common mechanism for chat utilizing the AJAX programming web communications technique.
In FIG. 2, a system has Client 100, Server 102 and Client 104, and a Polling Method 200 has numerous messages being transported between the clients and the server. As an example, Client 100 and Client 104 are having a IM session. Client 100 sends Message 130 to Server 102. Client 104 polls the Server 102 for any updates using Poll Message 204. Server 102 forwards Message 130 to Client 104. Over Time 207, Client 104 polls the Server 102 for any further updates using Poll Messages 206, 210. As there were no updates, Server 102 forwards No Update Response 208, 212 to Client 104. Likewise, Client 100 sends Polls 216, 224, 228 requiring the Server 102 to process those polls to determine whether there have been any updates and responding with No Update Responses 208, 212, 218, 226.
This approach however has two big disadvantages: too much load on the server and too much latency when delivering updates from the server to the client. That is, each polling request from the client requires processing by the server. If the server has many clients, as is most common, continuous polling puts too much load on the server. Each polling request may require accessing databases, memory and the like consuming processing cycles and increasing load.
Regarding the latency, this is shown in FIG. 2 as well. Client 104 sends Message 214 to Server 102 for the purpose of forwarding to Client 100 in real-time. However, Server 102 must wait for a Poll 228. After some time, due to the processing of other clients' polls, Server 102 forwards Message 214 to the receiving client, Client 100 in this example. Latency period 230 shows that the Client 100 does not receive the message as quickly as is now expected.
From a user experience perspective, it is desirable that an event or notification be received immediately following the action that triggers the event. For example, assume user-A (Client 100) and user-B (Client 104) are in a text-based chat. User-A would prefer to receive some chat text as soon as user-B presses [enter].
One known solution is for each user's browser to keep an open HTTP GET request with the RTC service (e.g., by using common AJAX techniques). AJAX, shorthand for Asynchronous JavaScript and XML, is a web development technique for creating interactive web applications. The AJAX technique uses a combination of many things including the XMLHttpRequest object which is used to exchange data asynchronously with the web server. More information regarding AJAX can be found here: http://developer.mozilla.org/en/docs/AJAX:Getting_Started.
The RTC service commits a thread to handle each open request, and delays sending a response until updates are available for specific users. A thread in computer science is short for a thread of execution. Threads are a way for a program to split itself into two or more simultaneously (or pseudo-simultaneously) running tasks.
Multiple threads can be executed in parallel on many computer systems. This also causes a problem in that the server load is increased to deal with the various threads.
A solution is needed which will create less load on the server, provide immediate client response times, and not be gated by server-side resource limits. Further, there is a need for a system and method for achieving highly scalable real-time collaboration applications using HTTP.
A solution is needed which will solve the blocking issue to be discussed further below.
In view of the foregoing, a need exists to overcome these problems by providing a system and method for achieving highly scalable real-time collaboration applications using HTTP.